JavaScript'te Promise
, asenkron işlemlerin sonucunu temsil eden bir nesnedir. Temelde, gelecekteki bir değerin (henüz elde edilmemiş olabilir) yer tutucusudur. Özellikle Asenkron programlama işlemlerinde kodun okunabilirliğini ve yönetilebilirliğini artırmak için kullanılır. Bir Promise üç olası durumda olabilir:
Bir Promise oluşturulduğunda, bir "executor" fonksiyonu alır. Bu fonksiyon iki parametre alır: resolve
ve reject
.
resolve(value)
: İşlem başarılı olduğunda çağrılır ve Promise'i "fulfilled" durumuna geçirir. value
, Promise'in sonucunu temsil eder.reject(reason)
: İşlem başarısız olduğunda çağrılır ve Promise'i "rejected" durumuna geçirir. reason
, hatanın nedenini temsil eder.Promise'in sonucuna erişmek veya hataları yakalamak için .then()
ve .catch()
metotları kullanılır:
.then(onFulfilled, onRejected)
: Promise "fulfilled" olduğunda onFulfilled
fonksiyonu çağrılır. Promise "rejected" olduğunda (eğer belirtilmişse) onRejected
fonksiyonu çağrılır..catch(onRejected)
: Sadece Promise "rejected" olduğunda onRejected
fonksiyonunu çağırır. Genellikle hata yakalama için .then()
metoduna alternatif olarak veya zincirin sonuna eklenir.Promise Zincirleme (Promise Chaining)
Promise'ler, art arda asenkron işlemleri kolayca yönetmek için zincirlenebilir. Bir .then()
metodu yeni bir Promise döndürür ve bu sayede işlemler sıralı bir şekilde gerçekleştirilebilir.
Örnek:
function fetchData(url) {
return new Promise((resolve, reject) => {
// Örnek olarak setTimeout ile asenkron bir işlem simüle edelim
setTimeout(() => {
const data = { message: "Veri başarıyla alındı!" };
resolve(data); // İşlem başarılı oldu
//reject("Veri alınamadı!"); // İşlem başarısız oldu
}, 1000);
});
}
fetchData("https://example.com/api/data")
.then(data => {
console.log("Alınan veri:", data);
return "İşlem tamamlandı!"; // Yeni bir değer döndürülüyor
})
.then(message => {
console.log(message); // "İşlem tamamlandı!" yazdırır
})
.catch(error => {
console.error("Hata:", error);
});
Önemli Kavramlar:
async
/await
(Promise'ler ile daha okunabilir asenkron kod yazmak için)Ne Demek sitesindeki bilgiler kullanıcılar vasıtasıyla veya otomatik oluşturulmuştur. Buradaki bilgilerin doğru olduğu garanti edilmez. Düzeltilmesi gereken bilgi olduğunu düşünüyorsanız bizimle iletişime geçiniz. Her türlü görüş, destek ve önerileriniz için iletisim@nedemek.page